package com.itheima.chap04;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class PersonalStoragempl implements PersonalStorage {
    // 捕获了编译器异常，转换成运行时异常，使得方法的声明变得简洁
    @Override
    public String readFileWithThrows(String fileName)/*throws FileNotFoundException,IOException*/{
        if(fileName == null || fileName.isBlank()){
            throw new HmException("文件名不能为空" , 10001);
        }
        try {
            FileReader reader = new FileReader(fileName);
            System.out.println("文件已打开");
            int value = reader.read();
            // 自定义异常处理~方法一
        } catch (FileNotFoundException e){
            throw new HmException("文件未找到!!",e,10002);
        }catch (IOException e){
            throw new HmException("文件读取失败!!",e,10003);
            // 自定义异常处理~方法二
           /* // 记录日志
            System.out.println("记录日志:" + e.getMessage());
            // 继续抛出异常，给上一层UI层处理（ThrowDemo）
//            throw e;
            throw new HmException(e.getMessage(),10002);*/
        }

        System.out.println("程序运行结束...");
        return"";
    }


    @Override
    public String readFile(String fileName){
        try {
            // 1.抛出异常后，后面的代码将不在执行，而是直接执行catch代码块以及后面的代码
            // 2.抛出多个异常时，如果需要分别处理，可以拥有多个catch块
            // 3.异常有父子关系时，子异常要在父异常上面
            // 4.多个非父子关系的异常处理方案一样时，可以在一个catch块中用 | 连接，表示或的关系
            FileReader reader = new FileReader(fileName);
            System.out.println("文件已打开");
            int value = reader.read();

            new SimpleDateFormat().parse("xxx");
        // 二.2.优化2
        } catch (IOException | ParseException e){
            System.out.println(e.getMessage());
        }


        // 二.1.优化1
        /*} catch (Exception e) {
            System.out.println(e.getMessage());
        }*/


        // 二.用getMessage()方法获取异常信息
            /*} catch(ParseException e){
            System.out.println(e.getMessage());
        }
        catch (IOException e){
            System.out.println(e.getMessage());
//            e.printStackTrace();
        }*/


        // 一.自己写捕获异常
        /*} catch (FileNotFoundException e){
            System.out.println("文件未找到");
        } catch (IOException e){
            System.out.println("文件读取失败!!");
        }*/
        System.out.println("程序运行结束...");
        return"";
    }
}
